package cn.tedu.throwablex;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class ExceptionDemo {
    public static void main(String[] args) {
        //编译时异常 ParseException  编译器会报错 要求必须要解决
//        new SimpleDateFormat("yyyy-MM-dd").parse("2020-10");
//        System.out.println("hello");

        //运行时异常 NullPointerException 编译不会报错 可以解决也可以不解决
//        String str = null;
//        System.out.println(str.length());
//        System.out.println("hello");

        //创建Throwable对象
//        Throwable throwable = new Throwable();
//        System.out.println(throwable);//java.lang.Throwable
//        Throwable throwable = new Throwable("报错啦~");
//        //detailMessage
//        System.out.println(throwable);//java.lang.Throwable: 报错啦~
        //detailMessage:/ by zero
//        System.out.println(5/0);
//        System.out.println(throwable.getMessage());
//        throwable.printStackTrace();

        //Error
//        new Error("这是一个美丽的错误").printStackTrace();
//        new Exception("这是一个美丽的异常").printStackTrace();
//        new NullPointerException().printStackTrace();
//        int b = 0;
//        if(b==0){
//            new ArithmeticException("除数不能为0").printStackTrace();
//        }
//        System.out.println(5/b);

        //自己产生一个运行时异常
//        int b = 0;
//        if(b==0){
//            throw new ArithmeticException("除数不能为0！");
//        }
//        System.out.println("hello");
//        System.out.println(5/b);
        //产生一个编译时异常
//        String str = "2020/10/28";
//        Date date = null;
//        try {
//            date = parse(str);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        System.out.println(date);

        Date date = parse("yyyy-MM-dd","2020-10");
        System.out.println(date);
    }

    public static Date parse(String pattern,String str){
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat(pattern);
        Date date = null;
        try {
            date = simpleDateFormat.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date parse(String str) throws Exception{
        String[] strs = str.split("-");
        if(strs.length != 3){
            //产生异常
            throw new Exception("日期格式不正确");

        }
        Calendar calendar = Calendar.getInstance();
        //String->int
        int year = Integer.parseInt(strs[0]);
        calendar.set(Calendar.YEAR,year);
        return calendar.getTime();
    }
}
